"""*arg:接收的是按照位置传参的值，组成一个元组，在前"""
"""**kwargs:接收的是按照关键字传参的值，组成一个字典，在后"""

#1，位置参数
"""一一对应，不可或缺"""
# def func(a,b):
#     sum = a + b
#     return sum
# print(func(2,3))
# print(func(2))

#2，默认参数
"""定义在位置参数后，作用是当参数缺省时，用定义的默认值代替"""
# def func(a,b=3):
#     sum = a + b
#     return sum
# print(func(2,4))
# print(func(2))

#3,可变参数
"""在元组或列表前加一个*，构造出可变参数，接收任意个参数，用于函数不确定的情况"""
# def func(*argsgg):
#     sum = 0
#     for x in argsgg:
#         sum +=x
#     return sum
# print(func(1,2,3,4))
#
# L = [1,2,3,4]
# print(func(*L))

#4,关键字参数
"""在dict前加两个**，构造关键字参数。接收任意无限制的参数，用于扩展函数的功能"""
# def func(a,b,**kw):
#     sum = a+b
#     print(a,'+',b,'=',sum,kw)
# func(2,3,color='red',phone='xiaomi')
#
# desc = {'color':'red','phone':'xiaomi'}
# func(2,3,**desc)

#5，命名关键字参数
# def func(a,b,*,color):
#     sum = a + b
#     print(a,'+',b,'=',sum,'color:',color)
# # func(2,3,color='red')
# func(2,3,color='red',phone ='xiaomi')

def func(a,b,*args,color='red'):
    sum = a + b
    print(a,'+',b,'=',sum,args,'color:',color)
func(2,3,color='red')
func(2,3,4,5,color='red')
#命名关键字支持默认值
func(2,3,4,5)

